Modern computer-based processing systems all include some kind of processor, memory, and one or more input/output (I/O) devices. Examples of such processing systems are personal computers (PCs), server-class computers, hand-held devices such as personal digital assistants (PDAs), and various types of appliances that connect to networks. The memory in a processing system normally stores data and instructions that are executed by the processor.
In many of these systems, the main memory is usually a form of random access memory (RAM). Most if not all forms of RAM are considered to be volatile, in that they require power to maintain the stored data. The two most common types of RAM are static RAM (SRAM) and dynamic RAM (DRAM). SRAM is static, in that a bit in SRAM can be set to a logic state, and the bit will stay in that state until set to another logic state or power is lost. SRAM is typically very fast in terms of access time; however, it also tends to be expensive.
DRAM is generally much less expensive than SRAM, and therefore, it is often preferred over SRAM for use as main memory in mass-produced processing systems. However, DRAM is dynamic, in that it must periodically be read and re-written to in order to maintain its state. This read/re-write process is called “refreshing”. If DRAM is not refreshed, it will lose its contents. Refreshing a typical DRAM requires refresh signals to be applied to the DRAM periodically while power is applied to maintain the data stored in it. Normally, an external circuit such as a memory controller provides the refresh signals to the DRAM. There are various different forms of DRAM, such as synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), Rambus DRAM (RDRAM), etc.
Under certain conditions, the refresh signals normally applied to DRAM may not be generated. For example, refresh signals typically are not generated during a system reset, which may be done when an error or malfunction has occurred in the processing system (e.g., a system “hang” or “crash”). Modern DRAM typically includes self-refresh capability, however, which allows the DRAM to operate in a self-refresh state under these conditions, in which the DRAM automatically generates its own refresh signals. The self-refresh state is a safe state that preserves the stored data.
Many common conditions under which the external refresh signals may be lost also involve a loss of power. Examples of such conditions are a manually-executed power-down of a computer system that is otherwise operating properly, or an unexpected interruption or loss of power to the computer system. Even if the DRAM is placed into the self-refresh state, the data stored in it will be lost if power to the DRAM is not maintained. By powering the DRAM from an auxiliary uninterruptible power source under these conditions, such as a battery, the stored data can be maintained, in the self-refresh state. DRAM consumes much less power in the self-refresh state than in the normal state, which helps to conserve battery power.
Many processing systems have the ability to perform a software-initiated power-down or reset, which can include placing DRAM into the self-refresh state. However, because many error conditions under which this might occur are software related, it is undesirable to have to rely upon software to place DRAM into the self-refresh state, especially for systems in which it is crucial to prevent loss of data.